var mask = {
	/* 遮罩层样式 */
	'css': {
		'position': 'absolute',
		'top': 0,
		'left': 0,
		'background-color': 'rgba(0, 0, 0, 0.35)',
		'text-align': 'center',
		'font-size': '4rem',
		'cursor': 'wait'
	},


	/**
	 * 初始化，检查数据
	 * @param Object params 参数列表
	 * @param Array field_list 待检查的字段列表
	 * @return Object res
	 */
	'init': function(params, field_list)
	{
		let res = {};
		for(key in field_list)
		{
			// 获取ID
			if(field_list[key] == 'id')
			{
				if(params.id === undefined)
				{
					console.error('参数丢失：遮罩层ID不能为空');
					return false;
				}
				if(params.id[0] != '#')
				{
					console.error('参数错误：ID无效（必须以#开头）');
					return false;
				}
				let mask_id = params.id.substr(1);
				// 检查唯一性
				if($(mask_id)[0] !== undefined)
				{
					console.error('遮罩层ID不唯一');
					return false;
				}
				res.mask_id = mask_id;
			}

			if(field_list[key] == 'type')
			{
				// 获取类型
				if(params.type === undefined)
				{
					console.error('参数丢失：遮罩层类型不能为空');
					return false;
				}
				let mask_type = params.type;
				// 检查类型
				switch(params.type)
				{
					case 'manual':
						;
						break;
					case 'auto':
						;
						break;
					default:
						console.error('参数错误：未知的遮罩层类型');
						return false;
				}
				res.mask_type = mask_type;

				// 获取倒计时
				if(mask_type == 'auto')
				{
					if(params.countdown === undefined)
					{
						console.error('参数丢失：倒计时时间为空');
						return false;
					}
					let countdown = params.countdown;
					// 检查倒计时格式
					let reg = /^\d+$/;
					if( !reg.test(countdown) )
					{
						console.error('参数错误：倒计时必须是纯数字');
						return false;
					}
					if(countdown <= 0)
					{
						console.error('参数错误：倒计时必须大于0');
						return false;
					}
					res.countdown = countdown;
				}
			}

			// 获取提示文字
			if(field_list[key] == 'text')
			{
				if(params.text === undefined)
				{
					console.error('参数丢失：提示信息为空');
					return false;
				}
				res.text = params.text;
			}

			// 获取遮罩层样式
			res.css = this.css;
			if(field_list[key] == 'css')
			{
				if(params.css !== undefined)
				{
					let user_css = params.css;
					for(obj in user_css)
					{
						res.css[obj] = user_css[obj];
					}
				}
			}
		}

		return res;
	},


	/**
	 * 显示遮罩层
	 * @params Object $params
	 * {
	 * 		String id 遮罩层ID（唯一，页面DOM内不能存在该ID）
	 * 		String type 类型 [manual-手动关闭 auto-自动关闭]
	 *		Int countdown 倒计时（毫秒），必须为大于0的整数，仅当type=auto时有效
	 * 		String text 要显示的提示文字
	 * 		Object css 用户自定义样式（非必填参数），形如 {'color': '#f00'} 。优先级较高，可覆盖默认样式。
 	 * }
	 */
	'show': function(params)
	{
		// 待检查字段
		let field_list = [
			'id',
			'type',
			'text',
			'css'
		];
		// 初始化
		let config = this.init(params, field_list);

		// 获取页面尺寸
		let page_width = $(window).width();
		let page_height = $(window).height();
		// 组装遮罩层样式
		let append_style = {
			'width': page_width + 'px',
			'height': page_height + 'px',
			'line-height': page_height + 'px'
		}
		let mask_css = config.css;
		for(obj in append_style)
		{
			mask_css[obj] = append_style[obj];
		}
		// 创建遮罩层
		let mask_contents = '<div id="' + config.mask_id + '">' + config.text + '</div>';
		$('body').append(mask_contents);
		// 设置遮罩层样式
		$('#' + config.mask_id).css(mask_css);
		// 自动模式，定时关闭遮罩层
		if(config.mask_type == 'auto')
		{
			setTimeout(
				"mask.hide( {id:'#" + config.mask_id + "'})",
				config.countdown
			);
		}
	},


	/**
	 * 关闭遮罩层
	 * @params Object $params
	 * {
	 * 		String id 遮罩层ID（唯一，页面DOM内不能存在该ID）
 	 * }
	 */
	'hide': function(params)
	{
		// 待检查字段
		let field_list = ['id'];
		// 初始化
		let config = this.init(params, field_list);

		// 删除遮罩层
		$('#' + config.mask_id).remove();
	}
};
